namespace Acme.MeiTuan.SDK.PushRequest;

public class MeiTuanOrderSettlementDto
{
    /// <summary>
    /// 订单号，数据库中请用bigint(20)存储此字段。
    /// </summary>
    public long order_id { get; set; }
    /// <summary>
    /// 订单的总原价，单位是元。此字段数据为未扣减所有优惠前订单的总金额，含打包袋、配送费等。
    /// </summary>
    public decimal original_price { get; set; }
    /// <summary>
    /// 支付类型:1货到付款，2在线支付。目前订单只支持在线支付，此字段推送信息为2。
    /// </summary>
    public int pay_type { get; set; }
    /// <summary>
    /// 订单状态，推送订单当前的状态。订单状态参考值有：1用户已提交订单；2向商家推送订单；4商家已确认；8订单已完成；9订单已取消。
    /// </summary>
    public int status { get; set; }
    /// <summary>
    /// 活动成本明细，仅为商家承担部分。字段信息为json格式数据。
    /// </summary>
    public string? activityDetails { get; set; }

    public ActivityDetail? activityDetailsObj { get; set; }
    /// <summary>
    /// 此字段信息为订单中所有商品金额的合计，单位是元。商品金额=商品原价＋包装盒费用＋赠品原价（铺货模式下，即当有第三方赞助商家派发赠品时，赠品原值为0）。
    /// </summary>
    public decimal foodAmount { get; set; }
    /// <summary>
    /// 总活动款，保留2位小数，单位是元。此字段信息为订单中所有活动商家承担成本合计金额。
    /// </summary>
    public decimal totalActivityAmount { get; set; }
    /// <summary>
    /// 平台服务费金额，四舍五入保留2位小数，单位是元。注意：结算消息中相关款项信息仅为美团计算的订单原始金额。 注： 新收费模式下，本参数是指技术服务费。 履约服务费请参考reconciliationExtras里的performanceServiceFee字段。
    /// </summary>
    public decimal commisionAmount { get; set; }
    /// <summary>
    /// 商家对账信息相关的额外信息
    /// </summary>
    public string? reconciliationExtras { get; set; }

    public ReconciliationExtra? reconciliationExtrasObj { get; set; }
    /// <summary>
    /// 结算金额，即商家应收款。保留2位小数，单位是元。
    /// </summary>
    public decimal settleAmount { get; set; }
    /// <summary>
    /// 配送费，保留2位小数，单位是元。
    /// </summary>
    public decimal shippingAmount { get; set; }
    /// <summary>
    /// 用户线下支付给商家端金额(仅适用货到付款的情况)，单位是元。目前平台订单仅支持在线支付方式。
    /// </summary>
    public decimal userPayAmount { get; set; }
    /// <summary>
    /// 美团应付给商家端金额(仅适用货到付款的情况)，单位是元。目前平台订单仅支持在线支付方式。
    /// </summary>
    public decimal offlineOrderSkPayAmount { get; set; }
    /// <summary>
    /// 订单配送方式code，商家可在开放平台的【附录】文档中对照查看不同配送方式code对应的描述，如0000商家自配、1001美团加盟、2002快送、3001混合送（即美团专送+快送）等。 如商家想了解自己门店的配送方式以及如何区分等情况，请咨询美团品牌经理
    /// </summary>
    public string? shippingType { get; set; }
    /// <summary>
    /// 打包袋金额，单位为元。目前仅药品类和部分零售类商家支持订单打包袋功能。
    /// </summary>
    public decimal package_bag_money { get; set; }
}

public class ActivityDetail
{
    /// <summary>
    /// 活动成本费用金额，保留2位小数，单位是元。
    /// </summary>
    public decimal chargeAmount { get; set; }
    /// <summary>
    /// 活动费用描述
    /// </summary>
    public string? chargeDesc { get; set; }
}

public class ReconciliationExtra
{
    /// <summary>
    /// 费率模式 1:旧收费模式 2:新收费模式 6 闪购企客模式
    /// </summary>
    public int chargeMode { get; set; }
    /// <summary>
    /// 订单履约服务费金额，单位元。如订单无履约服务费，则返回0。
    /// </summary>
    public decimal performanceServiceFee { get; set; }
    /// <summary>
    /// 技术服务费，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal technicalServiceFee { get; set; }
    /// <summary>
    /// 距离收费，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal distanceFee { get; set; }
    /// <summary>
    /// 时段增值收费，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal slaFee { get; set; }
    /// <summary>
    /// 基础配送费，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal baseShippingAmount { get; set; }
    /// <summary>
    /// 品类加价，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal categoryChargeFee { get; set; }
    /// <summary>
    /// 重量收费，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal weightChargeFee { get; set; }
    /// <summary>
    /// 特殊日期收费，单位为元，仅当费率模式为6时存在
    /// </summary>
    public decimal holidayChargeFee { get; set; }
}